Method for recommending upgrade components for a computer system

ABSTRACT

Method and computer program product for recommending cost effective upgrades for a computer system. At least one performance parameter is determined for an existing computer system. Up to date performance specifications for available upgrade components are obtained. A variety of potential systems are modeled utilizing at least one upgrade component, and at least one component from the existing system to create upgrade scenarios. At least one performance parameter is predicted for each upgrade scenario. The performance parameters for the upgrade scenarios are compared to the performance parameters of the existing computer system. The cost-effectiveness is determined for each upgrade scenario, and upgrade recommendations are made when the cost-effectiveness meets or exceeds a target value.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to methods and systems for identifyingupgrades for a computer system configuration.

2. Description of the Related Art

Our society has become very dependent upon the ability of computers tohandle complex tasks and automate routine processes. The drive toharness this ability has led to a pervasive use of computers in allaspects of modern life. Personal computer systems are used to producedocuments, run complex mathematical problems, send and receive email,access the Internet, control manufacturing processes, and so much more.Server systems must store and quickly access huge amounts of data, runcomplex databases, handle Internet and other communication tasks, andparticipate in various and changing system management protocols. In ascalable environment, multiple individual computer processors or systemsmust work in concert to handle the required tasks. The demands placed onthese computers can change rapidly as new applications are adopted andwhole generations learn to rely upon them for everyday tasks.

Regardless of sophistication, computer systems are comprised of acombination of inter-related components. Whether the system is apersonal computer (PC) or a server in a business environment, the systemmay be upgraded through the substitution or replacement of its componentparts or by the inclusion of additional components. Upgrade componentsmay also vary in scope from individual subcomponents, like a memorychip, to groups of complete computer systems. The availability of newtechnology has lead to large leaps in computer performance and thistrend is expected to continue for the foreseeable future. As a result,an established computer system can quickly become outdated and performpoorly as demand increases.

The load on a computer system is the set of tasks the system isinstructed to complete. When the load is known or predictable, theperformance of an existing computer system with upgraded components maybe modeled to predict performance. However, the point at whichbusinesses can benefit the most from upgrading existing systems isdifficult to determine and complicated by ever-changing component types,specification and costs.

Rapid advances in technology offer many opportunities for increasedefficiency in the workplace. However, due to the number of vendors andthe array of computer hardware and software products available intoday's market, it is often difficult to determine when any particularupgrade is desirable or cost-effective. Still, there exists a need topredict the performance of a computer system under various conditionsand to identify ways of improving that performance. It would bedesirable to have a method of predicting this performance that couldrecommend ways of improving performance of the existing computer system.It would be even more desirable if the method could identify one or moreof the most cost-effective ways to achieve the improved performance atany particular point in time.

SUMMARY OF THE INVENTION

The present invention provides a method of recommending upgrades for acomputer system and a computer program product for performing themethod. The method determines at least one performance parameter for theexisting computer system. The method then obtains performancespecifications for one or more upgrade components. The method thenmodels upgrade scenarios for various combinations of existing systemcomponents and upgrade components. The model predicts at least oneperformance parameter of each upgrade scenario. The performanceparameters of the existing computer system are compared to the predictedperformance parameters of the upgrade scenarios in order to quantifyperformance benefits associated with each of the one or more upgradescenarios.

The method may further comprise determining a cost-effectiveness of theupgrade scenarios, wherein the cost-effectiveness is a configurablerelationship between the predicted performance parameters of the upgradescenarios and the performance parameters of the existing computersystem. Optionally, upon the determination of cost-effectiveness, themethod may recommend upgrades when the cost-effectiveness meets orexceeds a target value. Further, the method may model one or moreupgrade scenarios associated with enabling on-demand software orhardware residing in the existing computer system, or allow for purchaseof recommended upgrades.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram of a client system and a remote server incommunication over a network.

FIG. 2 is a computer system having various typical input and outputdevices.

FIG. 3 is a schematic diagram of a computer system having network accessfor interacting with an application server

FIG. 4 is a flowchart describing the steps of a method for recommendingupgrades.

DETAILED DESCRIPTION

The present invention provides a method for modeling and predictingperformance parameters for a plurality of upgrade scenarios for anexisting computer system. The method establishes at least oneperformance parameter for the existing computer system. The performanceparameter may be any metric used to assess performance of a computersystem such as millions of instructions per second (MIPS), time tocompile, database access time, server response time to clients,processor load, etc. The method then obtains specifications for at leastone upgrade component. At least one upgrade scenario is modeled,including at least one of the upgrade components in combination with atleast as portion of the existing system component, in order to predict aperformance parameter for the upgrade scenario. The performanceparameter of the upgrade scenario is then compared to the performanceparameter of the existing computer system. A report is preferablyprovided to show the changes in performance that could be expected ifthe existing computer system were upgraded to include the upgradecomponents associated with each upgrade scenario.

In one embodiment, the existing computer system is monitored, and one ormore performance parameters of the existing computer system aredetermined. The monitoring system may include hardware and software.Existing computer performance monitoring solutions may be utilized forthis purpose. One example is the Windows® Performance Monitor. Such anapplication may monitor performance parameters and provide access tothis data through an application programming interface. Alternatively,the method and computer program product of the invention may provideindependent monitoring of performance.

Specifications for available upgrade components are obtained from adatabase of upgrade components via the internet, a local area network(LAN), a wide area network (WAN), or from a file stored locally on theexisting computer system. Optionally, the specifications may be obtainedelectronically whenever there is a change to the database, or atdetermined time intervals. This may take the form of downloadinginformation to a local database, accessing a remote database via anetwork upon receiving a notification that there have been changes tothe remote database, or accessing the remote database via a network atpredetermined time intervals. The specifications may also be physicallyobtained, such as loading a floppy disk containing information generatedby the database, or keying in information from a report generated by theremote database. Such specifications may be provided by componentvendors, distributors or retailers.

The database of upgrade components contains a list of currentlyavailable upgrade components, specifications for each of the currentlyavailable upgrade components, and preferably, current pricing for eachof the currently available upgrade components. The upgrade componentsmay include items such as random access memory (RAM), read only memory(ROM), motherboards, printed circuit boards (commonly referred to as“cards”), additional server blades, high speed switches, data storagedevices, communication devices, or any other component of a computersystem. The upgrade components may include multiple simultaneousupgrades affording a move to a new technology or protocol (for example,a change from wired to optical fiber based communication technology).The upgrade components may also include software. The specifications mayinclude performance parameters for the upgrade components, either singlyor when utilized in combination with other upgrade components, such asdimensions, duty cycle ratings, MIPS, or any other characteristics ofthe upgrade components. The pricing information may be listed for singleupgrade components or combinations of upgrade components. The pricinginformation may also be time-sensitive, limited to a particularcustomer/vendor contract, or any other applicable restrictions, andinclude validity or applicability rules.

After determining one or more performance parameters of the existingcomputer system, one or more upgrade scenarios can be modeled. Eachmodeled upgrade scenario preferably uses at least one of the existingcomputer system components in combination with one or more upgradecomponents. However, it may also be possible to model an upgradescenario comprising the replacement of the system under analysis with anentirely new system. Additionally it may be possible to model an upgradescenario consisting of the addition of new systems to the existing setof systems under analysis. Each upgrade scenario is modeled to predictat least one performance parameter. The predicted performance parametersmay be based upon models that use historical data, or known future jobs.After predicting one or more performance parameters of the upgradescenario, these performance parameters are compared to the one or moreperformance parameters of the existing computer system. A level ofperformance improvement associated with an upgrade scenario is thendetermined, and a report can be provided, preferably including somemeasure of cost-effectiveness. The report is most preferablyconfigurable to show the predicted performance parameters, including thecost-effectiveness, of the upgrade scenarios and, therefore, thecost-effectiveness of the upgrade components. The report may alsoprovide an opportunity for the user to enable any on-demand upgradecomponents in the existing computer system or purchase upgradecomponents as desired.

The method can be configured to run periodically, manually on demand bythe user, whenever the database of upgrade components is updated, orupon the occurrence of any triggering event. A change in availability orpricing of the upgrade components may affect the selection of upgradescenarios to be modeled, or the desirability of that upgrade scenariobased upon the resulting cost-effectiveness parameter. A cost/benefitanalysis may be configured to evaluate the upgrade scenarios, and theirdesirability. The configuration of the cost/benefit analysis may includethe performance parameter of the existing computer system, the predictedperformance parameter of the upgrade scenario, costs associated with theupgrade components included in the upgrade scenario, installation costs,the expected life of the upgrade components, and any other applicablefactors.

FIG. 1 is a schematic diagram of a server system 10 in communicationwith a client computer 20 through a network, such as the Internet 30.The client computer 20 includes conventional components such as aprocessor 24, memory 25 (e.g. RAM), a bus 26 which couples the processor24 and memory 25, a mass storage device 27 (e.g. a magnetic hard disk oran optical storage disk) coupled to the processor and memory through anI/O controller 28 and a network interface 29, such as a conventionalmodem. The client system 20 may be a personal computer, but the systemis most likely a server system. The server system 10 also includesconventional components such as a processor 11, memory 12 (e.g. RAM), abus 13 which couples the processor 11 and memory 12, a mass storagedevice 14 (e.g. a magnetic or optical disk) coupled to the processor 11and memory 12 through an I/O controller 15 and a network interface 16,such as a conventional modem.

It should be appreciated that the present method may be implemented insoftware that is stored as executable instructions on a computerreadable medium on the server system 10, such as in mass storage device14 or in memory 12. The server system 10 is shown having a serverapplication program 17, and an upgrade component database 18, stored inmass storage device 14. The application program can apply the method andgenerate upgrade scenarios with predicted performance parameters. Thelist of upgrade scenarios with predicted performance parameters can thenbe presented in a manner viewable by the client system 20. This list maybe displayed on a web page accessible to the client system, emailed tothe client system, or listed in a file downloadable by the clientsystem. The list may also be sent physically, such as in printed reportsmailed to the user of the client system, or saved to non-volatile memorysuch as a floppy disk, or flash memory and mailed to the user of theclient system.

The present method may also be implemented in software that is stored asexecutable instructions on a computer readable medium on the clientsystem 20, such as in mass storage device 27 or in memory 25. The clientsystem 20 is shown having a client application program 23, and anupgrade component database 19. Alternatively, the client applicationprogram 23 may communicate with the upgrade component database 18,stored in mass storage device 14 on the server 10, in order to obtainspecifications for the upgrade components.

The present method may also utilize monitoring hardware or software 31to establish the at least one performance parameter for the existingclient system 10. The monitoring hardware or software may accomplishtasks such as tracking types of tasks and obtaining performance data foreach type of task, as well as the number and type of task performed. Themonitoring hardware or software reports to the modeling applicationprogram that is also in communication with the upgrade componentdatabase to determine when changes are made to the upgrade componentdatabase.

The communications network 30 is the medium used to providecommunications links between the server 10 and any number of variousdevices and computers (individually represented as computer 20). Thecommunications network 30 may include permanent connections, such aswire or fiber optic cables, or temporary connections made throughtelephone or wireless communications. The server system may includeadditional servers, clients, routers and other devices not shown. In theexample of FIG. 1, the network system 30 may include the Internet (aworldwide collection of networks and gateways that use the TCP/IP suiteof protocols to communicate with one another). Of course, the Webapplication server 10 may also communicate over a number of differenttypes of networks, such as, for example, an intranet, a local areanetwork (LAN), or a wide area network (WAN).

It should be recognized that the implementation of the method may takethe form of an entirely hardware embodiment, an entirely softwareembodiment, or an embodiment containing both hardware and softwareelements. In particular embodiments, including those embodiments ofmethods, the invention may be implemented in software, which includesbut is not limited to firmware, resident software and microcode.

Furthermore, the invention can take the form of a computer programproduct accessible from a computer-readable medium providing programcode for use by or in connection with a computer or any instructionexecution system. For the purposes of this description, acomputer-usable or computer-readable medium can be any apparatus thatcan contain, store, communicate, propagate or transport the program foruse by or in connection with the instruction execution system, apparatusor device. The medium can be an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system (or apparatus ordevice) or a propagation medium. Examples of a computer-readable mediuminclude a semiconductor or solid state memory, magnetic tape, aremovable computer diskette, a random access memory (RAM), a read-onlymemory (ROM), a rigid magnetic disk and an optical disk. Currentexamples of optical disks include compact disk—read only memory(CD-ROM), compact disk—read/write (CD-R/W), DVD—read only memory(DVD-ROM), and DVD—read/write (DVD-R/W).

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers. Network adapters mayalso be coupled to the system to enable the data processing system tobecome coupled to other data processing systems or remote printers orstorage devices through intervening private or public networks. Modems,cable modems and Ethernet cards are just a few of the currentlyavailable types of network adapters.

FIG. 2 is a computer system having various typical input and outputdevices. The computer system 40 includes a display device 42 (such as amonitor), a display screen 44, a cabinet 46 (which encloses componentstypically found in a computer, such as CPU, RAM, ROM, video card, harddrive, sound card, serial ports, etc.), a keyboard 48, a mouse 43 and amodem 45. The mouse 43 may have one or more buttons, such as buttons 41.The computer requires some type of communication device such as modem 45that allows computer system 40 to be connected to the Internet. Otherpossible communication devices include Ethernet network cards, orwireless network cards. The computer system 40 may serve as the clientsystem 10 or may be used in association with the client system 10.

FIG. 3 is a schematic diagram of a computer system 50 that may berepresentative of client and server systems utilized in association withthe present invention. The system 50 may be a general-purpose computingdevice in the form of a conventional personal computer 50. Generally, apersonal computer 50 includes a processing unit 51, a system memory 52,and a system bus 53 that couples various system components including thesystem memory 52 to processing unit 51. System bus 53 may be any ofseveral types of bus structures including a memory bus or memorycontroller, a peripheral bus, and a local bus using any of a variety ofbus architectures. The system memory includes a read-only memory (ROM)54 and random-access memory (RAM) 55. A basic input/output system (BIOS)56, containing the basic routines that help to transfer informationbetween elements within personal computer 50, such as during start-up,is stored in ROM 54.

Computer 50 further includes a hard disk drive 57 for reading from andwriting to a hard disk 57, a magnetic disk drive 58 for reading from orwriting to a removable magnetic disk 59, and an optical disk drive 60for reading from or writing to a removable optical disk 61 such as aCD-ROM or other optical media. Hard disk drive 57, magnetic disk drive58, and optical disk drive 60 are connected to system bus 53 by a harddisk drive interface 62, a magnetic disk drive interface 63, and anoptical disk drive interface 64, respectively. Although the exemplaryenvironment described herein employs hard disk 57, removable magneticdisk 59, and removable optical disk 61, it should be appreciated bythose skilled in the art that other types of computer readable mediawhich can store data that is accessible by a computer, such as magneticcassettes, flash memory cards, digital video disks, Bernoullicartridges, RAMs, ROMs, and the like, may also be used in the exemplaryoperating environment. The drives and their associated computer readablemedia provide nonvolatile storage of computer-executable instructions,data structures, program modules, and other data for computer 50. Forexample, the operating system 65 and application programs, such as aclient application 66, may be stored in the RAM 55 and/or hard disk 57of the computer 50.

A user may enter commands and information into personal computer 50through input devices, such as a keyboard 70 and a pointing device, suchas a mouse 71. Other input devices (not shown) may include a microphone,joystick, game pad, satellite dish, scanner, or the like. These andother input devices are often connected to processing unit 51 through aserial port interface 68 that is coupled to the system bus 53, but inputdevices may be connected by other interfaces, such as a parallel port,game port, a universal serial bus (USB), or the like. A display device72 may also be connected to system bus 53 via an interface, such as avideo adapter 69. In addition to the monitor, personal computerstypically include other peripheral output devices (not shown), such asspeakers and printers.

The computer 50 may operate in a networked environment using logicalconnections to one or more remote computers 74. Remote computer 74 maybe another personal computer, a server, a client, a router, a networkPC, a peer device, a mainframe, a personal digital assistant, anInternet-connected mobile telephone or other common network node. Whilea remote computer 74 typically includes many or all of the elementsdescribed above relative to the computer 50, only a memory storagedevice 75 has been illustrated in the figure. The logical connectionsdepicted in the figure include a local area network (LAN) 76 and a widearea network (WAN) 77. Such networking environments are commonplace inoffices, enterprise-wide computer networks, intranets, and the Internet.

When used in a LAN networking environment, the computer 50 is oftenconnected to the local area network 76 through a network interface oradapter 78. When used in a WAN networking environment, the computer 50typically includes a modem 79 or other means for establishing high-speedcommunications over WAN 77, such as the Internet. A modem 79, which maybe internal or external, is connected to system bus 53 via serial portinterface 68. In a networked environment, program modules depictedrelative to personal computer 50, or portions thereof, may be stored inthe remote memory storage device 75. It will be appreciated that thenetwork connections shown are exemplary and other means of establishinga communications link between the computers may be used. A number ofprogram modules may be stored on hard disk 57, magnetic disk 59, opticaldisk 61, ROM 54, or RAM 55, including an operating system 65 and clientapplication 66.

The described example shown in FIG. 3 does not imply architecturallimitations. For example, those skilled in the art will appreciate thatthe present method may be implemented in other computer systemconfigurations, including hand-held devices, multiprocessor systems,multi-node or clustered systems, microprocessor based or programmableconsumer electronics, network personal computers, minicomputers,mainframe computers, and the like. The invention may also be practicedin distributed computing environments, where tasks are performed byremote processing devices that are linked through a communicationsnetwork. In a distributed computing environment, program modules may belocated in both local and remote memory storage devices.

FIG. 4 is a flowchart describing a method of recommending upgradecomponents. In steps 80 and 82, an initiating event causes the method tobe run. The initiating event may be a specified time period, an updateor change to the upgrade component database, a manual initiation by theuser, detection of a performance problem, traffic level, or loadthreshold, or any user defined condition or event. As shown, step 80determines whether any new specifications or pricing data is availablefor upgrade components. If not, then step 82 determined whether anymanual or periodic initiation of the performance modeling process hasbeen requested. If not, then steps 80 and 82 are repeated until aninitiating event has been detected.

In step 84, specifications for available upgrade components areobtained, such as from a remote server. The specifications may includecompatibility data, dimensions, pricing, and any other applicablecharacteristics of the upgrade components. In step 86, upgrade scenariosare generated utilizing a combination of existing system components andupgrade components. Numerous upgrade scenarios may be generated in thisstep. All of the permutations of existing system components withavailable upgrade components may be considered.

In step 88, one or more performance parameters are established for theexisting computer system. In establishing the one or more performanceparameters, the hardware and software configurations of the existingcomputer system may be considered, in conjunction with the historicaljob types, and future scheduled jobs. At least one performance parameteris determined to quantify the performance of the existing computersystem. The desired at least one performance parameter may be anymeasurable parameter that the user considers significant. Theperformance parameter of the existing computer system is needed as aninput to the modeling of the upgrade scenario and also for comparisonwith a predicted performance parameter of the upgrade scenario.

In step 90, one or more performance parameters are predicted for eachupgrade scenario generated in step 86. These one or more performanceparameters are preferably of the same type as the one or moreperformance parameters determined for the existing system. If multipleperformance parameters are determined for the existing computer system,the same performance parameters are preferably predicted for the upgradescenarios.

In step 92, predicted performance parameters of each upgrade scenarioare compared to the performance parameters of the existing computersystem. This comparison may be configurable. A ratio, difference amount,or any other relative strength equation may be utilized. In step 94, thecost-effectiveness of each upgrade scenario is determined. Thecost-effectiveness will be dependent upon the degree of predictedimprovement, i.e. the relative improvement of the predicted performanceparameter in relationship to the existing performance parameter, as wellas a cost to implement. This cost-effectiveness is configurable toincorporate business needs and goals. For example, if time to compile isa rate limiting step, and speed is desired, the ratio of relativeimprovement to cost may be set to a low desired target value. Bycontrast, if millions of instructions per second (MIPS) is not a keyvariable, the ratio of relative improvement to cost may be set to a highdesired target value. Any desired equation can be input to generate acost-effectiveness rating.

In step 96, the process generates a report that recommends upgradecomponents. The recommendation may be triggered by a cost-effectivenessrating above a target point. This target is configurable for the user.Preferably, the report will detail several different upgrade scenariosand their associated performance parameters and cost-effectiveness. Thereport may provide a ranking or comparative analysis of the variouspossible upgrade scenarios. The report may be utilized in any way,including direct transmission to the system owner, transmission to acustomer sales representative, or transmission to a third party.

The terms “comprising,” “including,” and “having,” as used in the claimsand specification herein, shall be considered as indicating an opengroup that may include other elements not specified. The terms “a,”“an,” and the singular forms of words shall be taken to include theplural form of the same words, such that the terms mean that one or moreof something is provided. The term “one” or “single” may be used toindicate that one and only one of something is intended. Similarly,other specific integer values, such as “two,” may be used when aspecific number of things is intended. The terms “preferably,”“preferred,” “prefer,” “optionally,” “may,” and similar terms are usedto indicate that an item, condition or step being referred to is anoptional (not required) feature of the invention.

While the invention has been described with respect to a limited numberof embodiments, those skilled in the art, having benefit of thisdisclosure, will appreciate that other embodiments can be devised whichdo not depart from the scope of the invention as disclosed herein.Accordingly, the scope of the invention should be limited only by theattached claims.

1. A method, comprising: establishing one or more performance parametersfor an existing computer system having a plurality of components;obtaining a performance specification for at least one available upgradecomponent; modeling at least one upgrade scenario that includes the atleast one upgrade component in combination with at least one componentof the existing computer system; predicting at least one performanceparameter of each upgrade scenario; and comparing the performanceparameter of the upgrade scenario to the one or more performanceparameters of the existing computer system.
 2. The method of claim 1,wherein the performance specification for the available upgradecomponent is located in a database, wherein the database is maintainedon a separate computer system, on the existing computer system, ordownloaded to the existing computer system.
 3. The method of claim 1,wherein the performance specification for each upgrade componentincludes a current cost of the component, the method further comprising:identifying a cost-effectiveness parameter of at least one upgradescenario.
 4. The method of claim 3, wherein the cost-effectivenessparameter of a particular upgrade scenario is determined based upon aconfigurable relationship between the predicted performance parameter ofthe upgrade scenario, the performance parameter of the existing computersystem, and the current cost of the available upgrade components.
 5. Themethod of claim 4, further comprising: receiving a notification when theremote server is updated; repeating the steps of predicting the at leastone performance parameter of each upgrade scenario and identifying thecost-effectiveness parameter of at least one upgrade scenario when thenotification is received.
 6. The method of claim 4, further comprising:detecting that the existing computer system has reached a performancethreshold or workload level; repeating the steps of predicting the atleast one performance parameter of each upgrade scenario and identifyingthe cost-effectiveness parameter of at least one upgrade scenario inresponse to reaching the performance threshold or workload level.
 7. Themethod of claim 5, further comprising: configuring the relationshipbetween the predicted performance parameter of the upgrade, theperformance parameter of the existing computer system, and the currentcost of the available upgrade components.
 8. The method of claim 7,further comprising: providing an option to enable on-demand componentson the existing system or purchase recommended upgrade components. 9.The method of claim 1, further comprising: generating a notice inresponse to identifying an upgrade scenario that meets or exceeds atarget value for the performance parameter.
 10. The method of claim 9,further comprising: configuring the desired target value for theperformance parameter;
 11. The method of claim 1, further comprising:monitoring existing computer system to determine the one or moreperformance parameters for the existing computer system.
 12. The methodof claim 1, further comprising: predicting the at least one performanceparameter of each upgrade scenario as compared to the one or moreperformance parameters of the existing system based upon common datathroughput.
 13. The method of claim 1, further comprising: modeling theexisting computer system to predict one or more performance parametersfor the existing computer system based on job types, throughput data,and known hardware and software configurations.
 14. The method of claim13, further comprising: modeling a plurality of upgrade scenarios topredict the at least one performance parameter for each upgrade scenariobased on job types, throughput data, and known hardware and softwareconfigurations.
 15. A computer program product comprising a computerusable medium including computer usable program code for searching adatabase, the computer program product including: computer usableprogram code for determining one or more performance parameters for anexisting computer system having a plurality of components, wherein theperformance parameters are configurable; computer usable program codefor obtaining a performance specification for at least one availableupgrade component, wherein the performance specification is stored in acomputer file, or input by the user; computer usable program code formodeling at least one upgrade scenario that includes at least oneupgrade component in combination with at least one of the components ofthe existing computer system; computer usable program code forpredicting the at least one performance parameter of each upgradescenario; and computer usable program code for comparing the performanceparameter of the upgrade scenario to the performance parameter of theexisting computer system.
 16. The computer program product of claim 15,further comprising: computer usable program code for reading ordownloading data from a computer file located on a separate computer.17. The computer program product of claim 16, further comprising:computer usable program code for identifying a cost-effectivenessparameter of at least one upgrade scenario, wherein the costeffectiveness parameter is configurable by the user.
 18. The computerprogram product of claim 17, further comprising: computer usable programcode for recommending upgrades when the cost effectiveness parametermeets or exceeds a configurable target value.
 19. The computer programproduct of claim 18, further comprising: computer usable program codefor enabling on-demand hardware or software on the existing computersystem, or purchase recommended upgrades.